package com.qf.usermanage;

/**
 * 提供用户注册和登录方法
 */
public class UserService {

    User[]userArr;
    int index; //当前用户注册是使用的下标

    public UserService() {
       //初始化 userArr 数组
        this.userArr = new User[2];
    }

    /**
     * 用户注册
     * @param user
     * @return true 注册成功
     */
    public boolean register(User user){
        //什么时候成功 什么时候失败
        //用户名存在失败否则成功
        if (this.existName(user.username)) {
            System.out.println("注册失败,用户名已经存在");
            return false;
        } else {
            if (index >= userArr.length) { //数组空间不够用
                //扩容，把数组长度扩大到原来的二倍
                User[] newUserArr = new User[userArr.length * 2];
                System.arraycopy(userArr, 0, newUserArr, 0, userArr.length);
                this.userArr = newUserArr;
            }
            //把用户对象保存 用于后续的登录
            //把用户保存到实例属性 userArr 中
            //保存到什么位置    数组的index位置
            userArr[index] = user;
            index++;
            return true;

        }
    }

    /**
     * 登录方法
     * user对象中的用户名与数组中的用户名密码一致，登陆成功否则false
     * @param user
     * @return
     */
    public boolean login(User user){
        if (index == 0){//特殊情况，直接返回false
            return false;
        }
        for (int i = 0; i < index; i++) {
            User u = userArr[i];
            if (u.username.equals(user.username)&&u.password.equals(user.password)){
                //登陆成功
                return true;
            }
        }
        //都遍历完成后，就登陆失败了
        return false;

    }

    /**
     * 判断用户名是否存在
     * @param name
     * @return true 存在
     */
    public boolean existName(String name){
        //遍历userArr中的每一个user 检测user用户名是否和name一样
        if(index == 0){
            return false;
        }
        for (int i = 0; i <index ; i++) {
            User user = userArr[i];
            if (name.equals(user.username)){
                //重名了
                return true;
            }
        }
        //如果上面的for循环循环遍历完成后，在循环过程中没有返回true,说明没有重名直接返回false
        return false;
    }
}
